clc
close all




% 处理文件
processFile('..\\output\\run162-A1P07\\10\\', 'output')

function processFile(filePath, fileName)
    %构造文件名
    
    inputFileName = strcat(filePath, fileName, '.wav');
    
    % 输出文件名
    disp(inputFileName);
    % 读取数据文件·
    [signal, fs] = audioread(inputFileName);
    
    % FIR带通滤波
    wn = [10 8000]*2/fs;
    b = fir1(100, wn);
    signal_f = filter(b, 1, signal);
    
    % LOFAR处理
    Tfft = 0.5; % 单个快拍积分时间/秒；
    nfft = Tfft * fs; % 单个快拍积分采样点数量；

    L_scan = 0.5 * nfft; % 积分窗滑移长度；
    N = floor(length(signal_f) / L_scan) - floor(nfft / L_scan); % 积分滑移次数。
    df = 1 / Tfft; % 频率分辨率；
    f = 10:df:5000; % 显示频率范围；
    
    % 处理每个快拍
    p = zeros(N, length(f));
    for i = 1:N
        data = signal_f(1 + (i - 1) * N:1 + (i - 1) * N + nfft - 1);
        [pxx, f] = periodogram(data, hamming(length(data)), f, fs);
        p(i, :) = 10 * log10(pxx);
    end
    
    % 生成频谱图
    tt = floor((N:-1:1) * L_scan + nfft / 2) / fs; % 时间序列
    imagesc(f, tt, p);
    colorbar;
    
     % 添加横轴、纵轴和标题
    xlabel('Frequency (Hz)');
    ylabel('Time (s)');
    title('run161');
    
    % 保存图像
    outputFileName = strcat(filePath, fileName, '.png');
    saveas(gcf, outputFileName);
    
    % 关闭当前图形窗口
    close(gcf);
end